"""
Lambda函数是一种匿名函数，通常用于一些间的，一次性的函数，这样可以方便顶替一个完整的函数
  特点：简洁性 匿名性 功能性编程 节省内存

 语法：
    lambda 参数列表:表达式
        参数列表：可以有多个或者零个，多个参数之间用逗号分隔
"""
#定义一个简单的Lambda函数，对传入的参数求平方
sq = lambda x: x * x #不需要写return 会自动返回结果
# sq是一个变量，可以理解是lambda函数的函数名
res = sq(5)
print(res)

st = lambda : "Hello Python"
print( st() ) #在调用lambda函数的时候，一定要变量名() ，如果直接调用变量名的话返回的是lambda函数的内存地址值


"""
Lambda函数常用简单的逻辑处理，同时也可以配合着高阶函数进行使用， map() filter() sort()
"""
num = [1,2,3,4,5,6] #利用map函数 求出每个元素的平方
res = list(   map(lambda x:x * x,    num  )          )#x指的是num中的每一个元素
print(res)#[1, 4, 9, 16, 25, 36]

#使用Lambda函数和filter函数 筛选出num中偶数
res = list( filter( lambda x: x%2==0,num    )  )#无论是map  filter 第一个参数计算的规则， 第二参数要操作的序列
print(res)#[2,4,6]

#使用Lambda函数定义一个自定义排序规则，对学生成绩进行排序
students = [
    {'name':'Json','grade':90},
    {'name':'Tony','grade':93},
    {'name':'Tom','grade':78},
    {'name':'Bob','grade':66}

]
sorted_student = sorted(students,key=lambda x:x['grade'],reverse=True)
print(sorted_student)
#[{'name': 'Bob', 'grade': 66}, {'name': 'Tom', 'grade': 78}, {'name': 'Json', 'grade': 90}, {'name': 'Tony', 'grade': 93}]

